/*///////////////////////////////////////
// Code By Jordan Robert Dobson
//
// JordanDobson.com
// @jordandobson
// jordandobson@gmail.com
////////////////////////////////////////*/

.xenon-iswitch-generate(@switch-width: 38px; @switch-size: 22px; @switch-space: 2px; @extra-spacing: 0px) {

  @base-font-size: 10px;

  @switch-off-padding: 0px;
  @switch-on-padding: @switch-size - @switch-space - 4 + @extra-spacing;
  @switch-button-size: @switch-size - (@switch-space*2);

  @switch-off-border: #eee;
  @switch-on-color: @xe-gray;
  @switch-toggle-color: #fff;

  @switch-animation-bounce-distance: 0px;

  input[type="checkbox"] & {
    font-size: @base-font-size;
    position: relative;
    display: inline-block;
    width: @switch-width;
    height: @switch-size;
    line-height: @switch-size;
    border-radius: @switch-size/2;
    margin: 0;
    padding: 0;
    box-shadow: inset 0 0 0 @switch-space @switch-off-border;
    outline: 1px solid transparent !important;
    cursor: pointer;
    border: none;
    background: transparent;
    user-select: none;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-touch-callout: none;
    .appearance(none);
    margin-right: 4px;
    margin-bottom: (@padding-base-vertical + 1);

    transition: box-shadow .3s ease-in-out, padding .25s ease-in-out;
    transition-delay: .1s, 0s;

    &:checked {
      transition-delay: 0s, 0s;
      box-shadow: inset 0 0 0 @switch-size/1.75 @switch-on-color !important;
      padding-left: @switch-on-padding;
    }

    // Styles
    &.iswitch-primary:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @brand-primary !important;
    }

    &.iswitch-secondary:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @secondary-color !important;
    }

    &.iswitch-info:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @brand-info !important;
    }

    &.iswitch-warning:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @brand-warning !important;
    }

    &.iswitch-danger:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @brand-danger !important;
    }

    &.iswitch-success:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @brand-success !important;
    }

    &.iswitch-red:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-red !important;
    }

    &.iswitch-blue:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-blue !important;
    }

    &.iswitch-purple:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-purple !important;
    }

    &.iswitch-pink:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-pink !important;
    }

    &.iswitch-turquoise:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-turquoise !important;
    }

    &.iswitch-yellow:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-yellow !important;
    }

    &.iswitch-orange:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 @xe-orange !important;
    }

    &.iswitch-gray:checked {
      box-shadow: inset 0 0 0 @switch-size/1.75 darken(@xe-gray, 10%) !important;
    }

    /* Animations if supported */

    &.hit {
      .animation(~"slide-off .35s ease both");
    }

    &.hit:checked {
      .animation(~"slide-on  .35s ease both .05s");
    }

    &:before,
    &:after {
      content: "";
    }

    &:after {
      /* Increases hit area */
      @size-adjust: -(@switch-button-size/3);

      position: absolute;
      top: @size-adjust;
      left: @size-adjust;
      bottom: @size-adjust;
      right: @size-adjust;
    }

    &:before {
      display: inline-block;
      height: @switch-button-size;
      width: @switch-button-size;
      margin: @switch-space 0 0 @switch-space;
      background-color: @switch-toggle-color;
      border-radius: @switch-button-size/2;
      box-shadow: 0 @switch-space (@switch-space*2) 0 rgba(0, 0, 0, .20),
      0 0 (@switch-space/2) (@switch-space/2)rgba(0, 0, 0, .10);
      .transition(~"all .1s ease .1s");
    }

    &:active:before {
      transition: all .1s ease .05s;
    }

    &.touch:hover:before {
      transition: all .0s ease .00s;
    }

    &:active:before,
    &.touch:hover:before {
      width: @switch-button-size + (@switch-space);
    }

    &:active:checked:before,
    &.touch:hover:checked:before {
      margin-left: -(@switch-space*0);
    }

  }

  @keyframes slide-on {
    0% {
      padding-left: @switch-off-padding;
    }
    60% {
      padding-left: @switch-on-padding + @switch-animation-bounce-distance;
    }
    100% {
      padding-left: @switch-on-padding;
    }
  }

  @keyframes slide-off {
    0% {
      padding-left: @switch-on-padding;
      text-indent: 0;
    }
    60% {
      padding-left: @switch-off-padding;
      text-indent: -@switch-animation-bounce-distance;
    }
    100% {
      padding-left: @switch-off-padding;
      text-indent: 0;
    }
  }
}

.iswitch {
  .xenon-iswitch-generate();
}

.iswitch-lg {
  .xenon-iswitch-generate(50px; 28px; 2px);
}

.iswitch-xlg {
  .xenon-iswitch-generate(85px; 38px; 2px; 15px);
}